//
//  IAAAuthCheckModel.h
//  iPadAuditAuthorise
//
//  Created by XiangDongMBP on 16/9/5.
//  Copyright © 2016年 XiangDong. All rights reserved.
//

#import <Foundation/Foundation.h>

#pragma mark - 业务审核

typedef NS_ENUM(NSInteger, IAAAuChTaskLevel) {
    IAAAuChTaskLevelFirst  = 11,        //!< 一审
    IAAAuChTaskLevelSecond = 12,        //!< 二审
};

@interface IAAAuthCheckTaskItem : NSObject

@property (nonatomic, copy)   NSString *busiId;     //!< 业务流水号
@property (nonatomic, assign) NSInteger taskId;     //!< 任务号
@property (nonatomic, copy)   NSString *accNo;      //!< 账号
@property (nonatomic, copy)   NSString *deviceNo;   //!< 终端编号
@property (nonatomic, copy)   NSString *orgNo;      //!< 任务发起网点号
@property (nonatomic, copy)   NSString *busiName;   //!< 交易名称
@property (nonatomic, copy)   NSString *reqTime;    //!< 任务申请时间
@property (nonatomic, assign) NSInteger taskLevel;  //!< 当前任务级别,11 为一审 12 为二审当为二审时,业务详情界面不允许有“补 拍”及“返回任务池”按钮
@property (nonatomic, assign) BOOL isNeedSecCheck;  //!< 是否需要二审 1 需要 0 不需要
@property (nonatomic, copy)   NSString *state;      //!< 任务状态

@end

// 业务审核页面的模型
@interface IAAAuthCheckModel : NSObject<YYModel>

@property (nonatomic, copy)   NSString *resultCode; //!< 0000 代表成功 其他代表失败
@property (nonatomic, copy)   NSString *resultMsg;  //!< 0000 时返回:处理成功,其他返回具体错误描述
@property (nonatomic, assign) NSInteger totalCout; //!< 记录总数
@property (nonatomic, strong) NSMutableArray<IAAAuthCheckTaskItem *> *taskList; //!< 任务列表数组

- (void)addMoreWithData:(IAAAuthCheckModel *)model;

@end



#pragma mark - 业务详情页

@interface IAAAuthCheckImgItem : NSObject

@property (nonatomic, copy)   NSString *imageBase64; //!< 图片文件Base64串,如果不存在则为空
@property (nonatomic, assign) BOOL isReTakePicture;  //!< 是否允许补拍,0 不允许 1 允许
@property (nonatomic, assign) BOOL isForce;          //!< 是否必须补拍,0 非必须,1 必须
@property (nonatomic, copy)   NSString *ufid;        //!< 图片Id(上传时，为空时，表明是新增；不为空，表明是替换)
@property (nonatomic, copy)   NSString *imageName;   //!< 图片类型
@property (nonatomic, assign) NSInteger imageType;   //!< 类型枚举

// 自己添加的属性
@property (nonatomic, copy)   NSString *fileFormat;  //!< 文件格式
@property (nonatomic, assign) NSInteger fileSize;    //!< 文件大小
@property (nonatomic, assign) BOOL isReplace;        //!< 图片是否被替换过(替换过的照片也需要上传)
@property (nonatomic, assign) BOOL isAdd;            //!< 是否是新增的(用户手动增加的，可以删除)
@property (nonatomic, assign) BOOL needUpload;       //!< 是否需要上传(当点击审核通过，来区分是否已经上传过)(只要拍过照片的，都用这个标志位)
@property (nonatomic, readonly) UIImage *imageObject;//!< 字符串组合成UIImage
@end

@interface IAAAuthCheckSortItem : NSObject
@property (nonatomic, assign) BOOL haveLook;                                    //!< 表明用户已经看过
@property (nonatomic, strong) NSMutableArray<IAAAuthCheckImgItem *> *imgArray;  //!< 整理后的数据

// 监测是否有某imageType的图片
- (BOOL)haveImageType:(NSInteger)imageType;

@end

@interface IAAAuthCheckDetailModel : NSObject

@property (nonatomic, copy)   NSString *resultCode;         //!< 0000 代表成功 其他代表失败
@property (nonatomic, copy)   NSString *resultMsg;          //!< 0000 时返回:处理成功,其他返回具体错误描述
@property (nonatomic, copy)   NSString *deviceNo;           //!< 设备编号
@property (nonatomic, copy)   NSString *busiName;           //!< 交易名称
@property (nonatomic, copy)   NSString *voucherName;        //!< 凭证类型
@property (nonatomic, copy)   NSString *fstState;           //!< 审核状态,如此有值则在界面显示,无值则不显示
@property (nonatomic, copy)   NSString *fstReason;          //!< 审核意见,如有值则显示,无值则不显示
@property (nonatomic, assign) NSInteger maxReTakePictureNum;//!< 允许补拍图片最大数量
@property (nonatomic, copy)   NSString *totalFaceResult;    //!< 人脸头像识别结果
@property (nonatomic, copy)   NSString *mainLwhcResult;     //!< 主办人联网核查结果
@property (nonatomic, copy)   NSString *agentLwhcResult;    //!< 代办人联网核查结果
@property (nonatomic, copy)   NSString *certFaceResult;     //!< 身份证人脸识别结果
@property (nonatomic, copy)   NSString *lwhcFaceResult;     //!< 联网核查人脸识别结果
@property (nonatomic, strong) NSMutableArray<IAAAuthCheckImgItem *> *imgelist;      //!< 业务图像列表数组

// 自定义的属性和方法
@property (nonatomic, strong) NSMutableArray<IAAAuthCheckSortItem *> *sortImgList;  //!< 整理后的模型
@property (nonatomic, readonly) NSInteger canAddNum;    //!< 可以补拍的数量
- (NSData *)imageDataWithIndex:(NSInteger)index;
- (IAAAuthCheckImgItem *)forceReTakePicture;            //!< nil表明没有必须补拍的
- (BOOL)isNeedUploadPicture;
- (void)configNeedUploadFlag:(BOOL)flag;
- (void)toSortImageList;                                //!< 整理原始数据为显示用的数据
- (void)changeFalseData;
@end

#pragma mark - 上传照片的模型
@interface IAAAuChUpPicItem : NSObject

@property (nonatomic, copy)   NSString *fileFormat;     //!< 文件格式
@property (nonatomic, assign) NSInteger fileType;       //!< 图像文件类型
@property (nonatomic, assign) NSInteger fileSize;       //!< 文件大小
@property (nonatomic, assign) NSInteger opType;         //!< 操作类型 0 添加 1 替换 2 删除
@property (nonatomic, copy)   NSString *ufid;           //!< 图像Id,文件编号,替换、删除时必须传此值在获取任务详情时会返回此值
@property (nonatomic, copy)   NSString *fileContent;    //!< 图像数据 Base64 编码

- (instancetype)initWithAuChImgItem:(IAAAuthCheckImgItem *)item;

@end

@interface IAAAuChUploadPicModel : NSObject

@property (nonatomic, copy)   NSString *acceptId;                   //!< 业务流水号
@property (nonatomic, copy)   NSString *token;                      //!< 本地保存的token
@property (nonatomic, strong) NSArray<IAAAuChUpPicItem *> *foList;  //!< 图片对象数组
@property (nonatomic, copy)   NSString *osName;
@property (nonatomic, copy)   NSString *contentId;                  //!< (未知、文档没有该字段)

- (instancetype)initWithBusiId:(NSString *)busiId token:(NSString *)token AuChDetailModel:(IAAAuthCheckDetailModel *)model;

@end

#pragma mark - 提交审核的模型

@interface IAAAuthCheckCommitModel : NSObject

@property (nonatomic, copy)   NSString *orgNo;          //!< 机构号
@property (nonatomic, copy)   NSString *userNo;         //!< 二审柜员号
@property (nonatomic, copy)   NSString *busiId;         //!< 业务流水号
@property (nonatomic, assign) NSInteger taskId;         //!< 任务号
@property (nonatomic, copy)   NSString *password;       //!< 交柜员密码的密码md5值
@property (nonatomic, assign) NSInteger taskLevel;      //!< 当前任务级别,11为一审 12为二审
@property (nonatomic, assign) BOOL commitFlag;          //!< 提交标志,1为审核通过 0审核不通过
@property (nonatomic, copy)   NSString *verifyCode;     //!< 手机验证码,二审任务审核通过时必输
@property (nonatomic, copy)   NSString *userStr;        //!< 用户唯一标识(获取验证码时返回的),审核通过时此值必须上送
@property (nonatomic, copy)   NSString *nuserNo;        //!< 二审柜员,一审审核通过需要二审时必须上送
@property (nonatomic, copy)   NSString *norgNo;         //!< 二审机构号,一审审核通过需要二审时必须上送
@property (nonatomic, copy)   NSString *marketingCode;  //!< 一审审核通过时必须上送(由审核员手动输入)
@property (nonatomic, copy)   NSString *failReason;     //!< 不通过原因,当commitFlag为0时,必需上送
@property (nonatomic, copy)   NSString *token;          //!< 本地保存的token
@property (nonatomic, copy)   NSString *osName;

- (instancetype)initWithAuChTaskItem:(IAAAuthCheckTaskItem *)item;

@end


#pragma mark - 手机验证码返回模型

@interface IAAAuChPhoneCodeModel : NSObject

@property (nonatomic, copy)   NSString *resultCode; //!< 0000 代表成功 其他代表失败
@property (nonatomic, copy)   NSString *resultMsg;  //!< 0000 时返回:处理成功,其他返回具体错误描述
@property (nonatomic, copy)   NSString *userStr;    //!< 用户唯一标示,任务提交时需上送此值

@end


#pragma mark - 获取二审柜员号

@interface IAAAuthCheckCheckerItem : NSObject

@property (nonatomic, copy)   NSString *orgNo;   //!< 机构号
@property (nonatomic, copy)   NSString *userNo;  //!< 二审柜员号
@property (nonatomic, assign) NSInteger taskNum; //!< 二审柜员待处理任务数

@end

@interface IAAAuthCheckCheckerModel : NSObject

@property (nonatomic, copy)   NSString *resultCode; //!< 0000 代表成功 其他代表失败
@property (nonatomic, copy)   NSString *resultMsg;  //!< 0000 时返回:处理成功,其他返回具体错误描述
@property (nonatomic, assign) NSInteger totalCount; //!< 记录总数
@property (nonatomic, strong) NSMutableArray<IAAAuthCheckCheckerItem *> *checkerList; //!< 柜员列表数组

- (void)addMoreWithData:(IAAAuthCheckCheckerModel *)model;

@end

